package com.zhanjixun.weixin.utils;

import com.google.common.collect.Maps;
import com.zhanjixun.weixin.Weixin;
import com.zhanjixun.weixin.domain.ContactMember;

import java.util.Map;
import java.util.Optional;

/**
 * 通讯录一些转换MessageTools
 *
 * @author :zhanjixun
 * @date : 2018/11/19 11:07
 */
public class UserTools {

    public static String userName2nickName(String userName) {
        Map<String, ContactMember> map = Maps.newHashMap();
        Weixin.getInstance().getWxInitDataDTO().getContactList().forEach(n -> map.put(n.getUserName(), n));
        Weixin.getInstance().getWxContact().forEach(n -> map.put(n.getUserName(), n));
        return Optional.ofNullable(map.get(userName)).map(ContactMember::getNickName).orElse("");
    }

    /**
     * 用户昵称转用户ID
     *
     * @param nickName 用户昵称
     * @return 用户ID
     */
    public static String nickName2userName(String nickName) {
        Map<String, ContactMember> map = Maps.newHashMap();
        Weixin.getInstance().getWxInitDataDTO().getContactList().forEach(n -> map.put(n.getNickName(), n));
        Weixin.getInstance().getWxContact().forEach(n -> map.put(n.getNickName(), n));
        return Optional.ofNullable(map.get(nickName)).map(ContactMember::getUserName).orElse("");
    }

    /**
     * 备注转用户ID
     *
     * @param remarkName 备注
     * @return 用户ID
     */
    public static String remarkName2userName(String remarkName) {
        Map<String, ContactMember> map = Maps.newHashMap();
        Weixin.getInstance().getWxInitDataDTO().getContactList().forEach(n -> map.put(n.getRemarkName(), n));
        Weixin.getInstance().getWxContact().forEach(n -> map.put(n.getRemarkName(), n));
        return Optional.ofNullable(map.get(remarkName)).map(ContactMember::getUserName).orElse("");
    }

    /**
     * 获取通讯录好友
     *
     * @param userName 用户ID
     * @return
     */
    public static ContactMember getContactMemberByUserName(String userName) {
        Map<String, ContactMember> map = Maps.newHashMap();
        Weixin.getInstance().getWxInitDataDTO().getContactList().forEach(c -> map.put(c.getUserName(), c));
        Weixin.getInstance().getWxContact().forEach(c -> map.put(c.getUserName(), c));
        return map.get(userName);
    }

}
